import axios from "axios";
import maps from "@/utils/initMap";
import { ElMessageBox } from "element-plus";

const pips = (text: string, time: any) => {
    ElMessageBox.alert(text, "", {
        closeOnClickModal: true, // 是否可以通过点击遮罩层来关闭对话框
        showConfirmButton: false,
    });
    // 设置3秒后自动关闭
    setTimeout(() => {
        ElMessageBox.close();
    }, time * 1000);
};
/**
 * 消息弹窗
 * @param text 要显示的提示信息
 * @param time 提示信息显示的时长，默认2.5秒
 */
export const popMsg: any = {
    // div: document.createElement("div"), // 添加的dom
    // // timer: "",
    // /**
    //  * 执行添加和删除的函数
    //  */
    // creatPop: (text: string, time: number) => {
    //     popMsg.div.setAttribute("class", "popupMsg");
    //     popMsg.div.innerText = text;
    //     document.body.appendChild(popMsg.div);
    //     setTimeout(() => {
    //         popMsg.div.className = "popupMsg";
    //         setTimeout(() => {
    //             popMsg.div.remove();
    //         }, 500);
    //     }, time * 1000);
    // },
    /**
     * 成功
     */
    success: (text: string, time: number = 3) => {
        // popMsg.creatPop(text, time);
        // setTimeout(() => {
        //     popMsg.div.className = "popupMsg success popupAnimetion";
        // }, 100);
        pips(text, time);
    },
    /**
     * 错误
     */
    error: (text: string, time: number = 3) => {
        // popMsg.creatPop(text, time);
        // setTimeout(() => {
        //     popMsg.div.className = "popupMsg error popupAnimetion";
        // }, 100);
        pips(text, time);
    },
    /**
     * 提示
     */
    hint: (text: string, time: number = 3) => {
        // popMsg.creatPop(text, time);
        // setTimeout(() => {
        //     popMsg.div.className = "popupMsg hint popupAnimetion";
        // }, 100);
        pips(text, time);
    },
};
/**
 * 计算工作时段时间列表
 * @param startTime 开始时间
 * @param endTime 结束时间
 * @returns 开始时间-结束时间的时间列表，(包括开始和结束时间)
 */
export const jobTimes = (startTime: string, endTime: string) => {
    let times = [];
    for (let i = parseInt(startTime); i <= parseInt(endTime); i++) {
        times.push(`${i}:00`);
    }
    return times;
};
/**
 * 高压管道图表显示时间
 */
export const highpressure = () => {
    let rq = new Date();
    let Hours = rq.getHours() >= 10 ? rq.getHours() : `0${rq.getHours()}`;
    let Minutes = rq.getMinutes() >= 10 ? rq.getMinutes() : `0${rq.getMinutes()}`;
    let Seconds = rq.getSeconds() >= 10 ? rq.getSeconds() : `0${rq.getSeconds()}`;
    let time = `${Hours}:${Minutes}:${Seconds}`;
    return time;
};
/**
 * 获取设备定位器位置， 20秒一次，
 * 接口特殊，故单独调
 * @param id 设备ID
 * @returns 设备信息+位置信息
 */
export const getOptions = async (id?: string) => {
    return await axios.get(`http://59.110.54.18:8200/device/option?deviceId=${id}`).then((res) => {
        return res.data;
    });
};
/**
 * 添加或编辑人员信息验证
 * @param obj 人员信息数据对象
 */
export const menberVerify = (obj: any) => {
    // console.log(obj);
    if (!obj.deviceId) {
        // alert("请选择设备");
        ElMessageBox.alert("请选择设备", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    if (!obj.name) {
        // alert("请输入人员姓名");
        ElMessageBox.alert("请输入人员姓名", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    if (!obj.rq) {
        // alert("请选择工作日期");
        ElMessageBox.alert("请选择工作日期", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }

    console.log(obj.timeIntervalStart, obj.timeIntervalEnd, "21");
    if (obj.timeIntervalStart == "" || obj.timeIntervalEnd == "") {
        // alert("请选择工作时段");
        ElMessageBox.alert("请选择工作时段", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    if (parseInt(obj.timeIntervalStart) >= parseInt(obj.timeIntervalEnd)) {
        // alert("结束时间不能早于开始时间");
        ElMessageBox.alert("结束时间不能早于或等于开始时间", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    if (!obj.lineSpacing) {
        // alert("请输入行距");
        ElMessageBox.alert("请输入行距", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    if (!obj.rowSpacing) {
        // alert("请输入株距");
        ElMessageBox.alert("请输入株距", "", {
            closeOnClickModal: false, // 是否可以通过点击遮罩层来关闭对话框
            showConfirmButton: true,
        });
        return false;
    }
    return true;
};
/**
 * 滴灌喷灌列表鼠标移入高亮地图标绘
 * @param item 传入的tr   item
 */
export const tabelTrMouseover = (item: any, select: any) => {
    // if (select != undefined) {
    //     return false;
    // }
    let graphics = maps.graphicLayer.graphics;
    graphics.forEach((g: any) => {
        // 多边形操作
        if (g.type == "polygon") {
            if (g.deviceId == item.deviceId) {
                g.setStyle({
                    outlineColor: "#0DFFF0",
                    label: {
                        color: "#0DFFF0",
                        outlineColor: "#0DFFF0",
                        font_size: 28,
                    },
                });
            } else {
                if (select != undefined && select.deviceId != g.deviceId) {
                    g.setStyle({
                        outlineColor: "#000000",
                        label: {
                            color: "#000000",
                            outlineColor: "#000000",
                            font_size: 14,
                        },
                    });
                }
            }
        }
    });
};
/**
 * 滴灌喷灌列表鼠标移出取消高亮地图标绘
 * @param item 传入的tr   item
 */
export const tabelTrMouseout = (item: any, select: any) => {
    // if (select != undefined) {
    //     return false;
    // }
    let graphics = maps.graphicLayer.graphics;
    graphics.forEach((g: any) => {
        if (g.deviceId == item.deviceId) {
            if (select != undefined && select.deviceId == g.deviceId) {
                return;
            }
            g.setStyle({
                outlineColor: "#000000",
                label: {
                    color: "#000000",
                    outlineColor: "#000000",
                    font_size: 14,
                },
            });
        }
    });
};
/**
 * 小时分钟互换
 * @param time 传入的时间
 * @param type 要转换的类型 1 分钟转小时，2 小时转分钟
 */
export const timeConversion = (time: any, type: number) => {
    if (type == 1) {
        return time / 60;
    } else {
        return time * 60;
    }
    console.log(time, type);
};
/**
 * 设备开始和停止的时间记录
 */
export const subareaHandleStorage = (id: string, type: string) => {
    let stroeKey = `${id}-${type}`;
    let itemStore = localStorage.getItem(stroeKey);
    if (itemStore) {
        // 已经开始，增加结束时间
        let t = JSON.parse(itemStore);
        t.endTime = new Date().getTime();
        localStorage.setItem(stroeKey, JSON.stringify(t));
    } else {
        // 没有开始
        let data = {
            startTime: new Date().getTime(),
            endTime: 0,
        };
        localStorage.setItem(stroeKey, JSON.stringify(data));
    }
};
// 获取设备开始时间到当前数据更新的时间差
export const getIrrigatedTime = (id: string, type: string) => {
    let stroeKey = `${id}-${type}`;
    let itemStore = localStorage.getItem(stroeKey);
    if (itemStore) {
        let times = JSON.parse(itemStore);
        // 没有结束时间，继续计算时间差
        // if (times.endTime == 0) {
        let ctime = new Date().getTime();
        let jtime = ctime - times.startTime;
        let diff = jtime / 1000 / 60 / 60;
        return Number(diff.toFixed(2));
        // }
    }
    return 0;
};
